using System;

namespace SimpleServiceBus.Messages.Subscriptions
{
    /// <summary>
    /// A message representing a subscribe/unsubscribe request to receive messages
    /// of a specific type.
    /// </summary>
    [Serializable]
    public abstract class SubscriptionMessage
    {
        public string SubscriberAddress { get; set; }
    }

    [Serializable]
    public class SubscribeToAllRequest : SubscriptionMessage
    {
    }

    [Serializable]
    public class SubscribeToMessageRequest : SubscriptionMessage
    {
        public string MessageType { get; set; }
    }

    [Serializable]
    public class UnsubscribeFromMessageRequest : SubscriptionMessage
    {
        public string MessageType { get; set; }
    }

    [Serializable]
    public class UnsubscribeFromAllRequest : SubscriptionMessage {}
}